===================================================================== 
       Apple-II To IBM-PC Disk Transfer Program (LOADER.ASM)
--------------------------------------------------------------------- 
  Edited 2016 (for personal use) by: James Davis, Beagle Buddy #227.===================================================================== 

Following are the codes to transfer a .dsk file from an IBM-PC to an 
Apple-II disk.  You must type them in first: type "CALL-151 (return)" 
[without the quotes]; then type in the codes, "300:8D 5E ...."  Less 
then 160 byte, be patient!

]CALL-151
*300.39D
0300- 8D 5E C0 A9 00 8D EB B7
0308- 8D F0 B7 8D F2 B7 8D F3
0310- B7 8D EC B7 85 07 A9 02
0318- 8D F4 B7 A9 95 8D F1 B7
0320- A9 00 8D ED B7 A2 00 A9
0328- 03 85 06 A9 00 85 08 8D
0330- 5F C0 AD 70 C0 EA EA EA
0338- 2C 64 C0 30 F5 18 AD 63
0340- C0 2A AD 62 C0 29 80 05
0348- 08 2A 85 08 AD 61 C0 29
0350- 80 05 08 2A 2A 85 08 8D
0358- 5E C0 AD 70 C0 EA EA EA
0360- 2C 64 C0 10 F5 C6 06 F0
0368- 03 4C 2F 03 A5 08 A8 45
0370- 07 85 07 98 9D 00 95 E8
0378- D0 AD 20 E3 03 20 D9 03
0380- A9 00 85 48 EE ED B7 A9
0388- 10 CD ED B7 D0 97 EE EC
0390- B7 A9 23 CD EC B7 D0 88
0398- A5 07 20 DA FD 60

===================================================================== 

















===================================================================== 
                               Page 1
===================================================================== 
       Apple-II To IBM-PC Disk Transfer Program (LOADER.ASM)
===================================================================== 

Following are the source codes in LISA form.  I'm sorry for no 
detailed remarks.  After you type in the codes above, you can type: 
"300LLLL" to compare them with the following 6502 assembler listing: 

         ORG $300      ; code start from $300
         STA $C05E     ; turn off AN3 (apple handshake out)
         LDA #$00
         STA $B7EB     ; fill in IOB
         STA $B7F0
         STA $B7F2
         STA $B7F3
         STA $B7EC     ; $B7EC is track# to write
         STA $07       ; $07 store checksum
         LDA #$02
         STA $B7F4     ; code 2 for write (rwts code)
         LDA #$95      ; buffer is $9500 to $95FF
         STA $B7F1
LOOPTR   LDA #$00
         STA $B7ED     ; $B7ED is sector# to write
LOOPSE   LDX #$00      ; x-register is byte count
LOOPBYTE LDA #$03
         STA $06       ; $06 store 3bit count   3 -> 2 -> 1 3bit once
         LDA #$00
         STA $08       ; $08 store the data byte temporatory
LOOP3BIT STA $C05F     ; turn on apple handshake out
WAIT1    LDA $C070     ; start joystick signal checking
         NOP 
         NOP 
         NOP 
         BIT $C064
         BMI WAIT1     ; wait until $C064 value < 128 
                       ; (pc handshake out)
         CLC 
         LDA $C063
         ROL 
         LDA $C062
         AND #$80
         ORA $08
         ROL 
         STA $08
         LDA $C061
         AND #$80
         ORA $08
         ROL 
         ROL 
         STA $08       ; get 3bit from PB0~PB2
         STA $C05E     ; turn off apple handshake out

===================================================================== 
                               Page 2
===================================================================== 
       Apple-II To IBM-PC Disk Transfer Program (LOADER.ASM)
===================================================================== 

WAIT2    LDA $C070     ; start joystick signal checking
         NOP 
         NOP 
         NOP 
         BIT $C064
         BPL WAIT2     ; wait until $C064 value > 128
         DEC $06       ; next 3 bit?
         BEQ NEXTBYTE
         JMP LOOP3BIT
NEXTBYTE LDA $08
         TAY 
         EOR $07
         STA $07
         TYA           ; doing checksum
         STA $9500,X   ; store data byte to buffer
         INX 
         BNE LOOPBYTE  ; next byte? or buffer full?
         JSR $03E3
         JSR $03D9     ; call rwts subroutine
         LDA #$00
         STA $48       ; patch zero page useage
         INC $B7ED     ; next sector
         LDA #$10
         CMP $B7ED
         BNE LOOPSE    ; check if all 16 sector ok
         INC $B7EC     ; next track
         LDA #$23
         CMP $B7EC
         BNE LOOPTR    ; check if all 35 tracks ok
         LDA $07
         JSR $FDDA     ; print out checksum
         RTS 
         END           ; thank you for use this program

===================================================================== 













===================================================================== 
                               Page 3
